#pragma once
#include <iostream>
#include <string>
#include <cstring>
#include <cassert>
#include <cerrno>   
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>


//定义一个管道的路径，可以是任意路径下
#define NAME_PIPE "/home/lcl/linux/Process_communication/name_pipe/mypipe"

using namespace std;

bool createFifo(const string& path)
{
    umask(0);
    //mkfifo需要的是一个const char*的参数，是c类型的，而这里的path是C++中是string，所以转换一下
    int n = mkfifo(path.c_str(),0600);
    if(n == 0)
    {
        return true;
    }
    else
    {
        cout << "errno: " << errno << "err string: " << strerror(errno) << endl;
        return false;
    }
}

void removeFifo(const string& path)
{
    int n = unlink(path.c_str());
    assert(n == 0);
    (void)n;
}


// bool createFifo(const char* path)
// {
//     assert(path);
//     umask(0);
//     int n = mkfifo(path, 0600);
//     if(n == 0)
//     {
//        return true;
//     }
//     else
//     {
//         cout << "失败" << endl;
//         return false;
//     }
// }

// void removeFifo(const char* path)
// {
//     assert(path);
//     int n = unlink(path);
// }